﻿using System.ServiceModel;
using MyFloridaHouse.libSTO;
using MyFloridaHouse.libSvDTO;
using System;
using Microsoft.SqlServer.Types;
using System.Collections.Generic;

namespace MyFloridaHouse.MapServer
{
	[ServiceContract]
	public interface IDistrBldr
	{

        [OperationContract]
        StructureSTO GetDataStructures();

        [OperationContract]
        CensusGeometrySTO StartupGetCensusGeometry(DateTime clientFileTimestamp);

        [OperationContract]
        DistrictPlanTypeSTO StartupGetDistrictPlanTypes(DateTime clientFileTimestamp);

        [OperationContract]
        LayerSTO StartupGetLayers();



        [OperationContract]
        FileSTO GetCloudFile(FileInfoDTO fileToGet);

		[OperationContract]
        FileInfoSTO GetCloudFileInfo(string directoryName);

		[OperationContract]
		DistrictShapeSTO GetDistrictShape(byte[] iCompressedShapeList, int iDistrictID);

        [OperationContract]
        DistrictShapeClippedSTO GetDistrictShapeClipped(DistrictShapeClippedSTO sto);

		[OperationContract]
		ShapeUogidSTO GetShapeUogIDs(string iWktList, int iLayerID, int iDistrictID);

		[OperationContract]
		DistrictDataSummarySTO GetDistrictDataSummary(int iDistrictID, byte[] compressediRegionIDList, string iSourceLayerIDList, string iDictionaryIDList);

		[OperationContract]
		ACSDistrictSummaryReportSTO GetACSDistrictDataSummary(int iDistrictID, byte[] compressediRegionIDList, string iSourceLayerID, string iTableIDList);

		[OperationContract]
		ACSDistrictSummaryReportDefinitionSTO GetACSReportDefinition();

        [OperationContract]
		RegionDataListSTO GetRegionDataList(int layerID, int regionID);

        [OperationContract]
        RegionShapesInViewSTO GetRegionShapesInView(RegionShapesInViewSTO sto);

        [OperationContract]
        RegionIDsSTO GetRegionIDsInView(int iLayerID, double iNorth, double iEast, double iSouth, double iWest);

        [OperationContract]
        RegionsShapesSTO GetRegionListShapes(double zoomLevel, int iTargetLayerID, List<int> iRegionIDList);

        [OperationContract]
        LayerRegionsDataSTO GetRegionListData(int iTargetLayerID, List<int> iRegionIDList, string iSourceLayerIDList, string iDictionaryIDList);

		//Todo: Future methods
		#region 

        [OperationContract]
        DataDictionaryDenominatorSTO GetDataDictionaryDenominators(string iDataPartIDList);

        [OperationContract]
        DataDictionaryPartSTO GetDataDictionaryParts();

        [OperationContract]
        DataDictionarySTO GetLayerDataDictionary(int layerID);

		#endregion

	}
}